﻿using Sys.Core.Models.Dto;
using Sys.Core.Models.VO;
using Sys.Core.Services;
using MiniFox.Components;
using MiniFox.Infrastructure;

namespace Sys.Core
{
    [AutoRegister, SpareComponent(typeof(MenuService))]
    public interface IMenuService
    {
        IEnumerable<ITreeNode> Query();

        MenuVo Create(MenuDto menu);

        MenuVo Update(MenuDto menu);

        string Delete(string appId, string menuId);

        string Delete(string menuPath);

        IEnumerable<MenuModuleVo> GetMenuModules(string appId, string menuId);

        IEnumerable<MenuModuleVo> AddMenuModules(MenuModuleSet menuModuleSet);

        IEnumerable<MenuModuleVo> RemoveMenuModules(MenuModuleSet menuModuleSet);

        IEnumerable<MenuModuleVo> EditMenuModule(MenuModuleDto menuModule);

        IEnumerable<MenuLinkVo> GetMenuLinks(string appId, string menuId);

        MenuLinkVo CreateLink(MenuLinkDto link);

        MenuLinkVo UpdateLink(MenuLinkDto link);

        string DeleteLink(string linkId);
    }
}
